/**
 * @file cm_mpu_interface.h
 * @author jmdvirus
 */
#ifndef CM_MPU_INTERFACE_H
#define CM_MPU_INTERFACE_H

#include <unistd.h>

#ifdef __cplusplus
extern "C"
{
#endif

    /**
     * 上下文句柄对象
     */
    typedef struct
    {
        void *priv_data; // 内部使用，勿改，首次置 NULL
    } CMMpuContext;

    typedef struct
    {
        char *name; 
        /**
         * 打开设备
         * @param ctx 上下文
         * @param dev 设备名
         */
        int (*open)(CMMpuContext *ctx, const char *dev);
        int (*close)(CMMpuContext *ctx);
       
        int (*ready)(CMMpuContext *ctx);
        int (*read)(CMMpuContext *ctx);
        int (*read_ypr)(CMMpuContext *ctx, float ypr[]);
        int (*read_gyro)(CMMpuContext *ctx, float gyro[], float accel[]);
    } CMMpuImpl;

#ifdef __cplusplus
}
#endif

#endif // CM_MPU_H
